Computing systems, such as the personal computer (PC), are increasingly being used for the recording and playing back of streaming audio data. The PC can be used as a type of media server where several audio, video and multimedia applications are simultaneously running, each of which uses the operating system (OS) of the PC. By way of example of a PC as a media server, consider the following simultaneous uses scenario. A Digital Video Disk is being played back by a first media player application (MP) that uses a DVD player on the PC. A microphone is being used for a Voice-Over-Internet Protocol in a Real Time Communication Application (RTC) for network telephony in which users of respective computing systems talk to one another over a packet switched network, much as a telephone user talks to another telephone user over a circuit switched network. System sounds are being generated by the OS during user interaction with the PC. A Video-On-Demand application (VOD) is being executed by the PC as streaming multimedia is being received via a cable or satellite TV broadcast system. A music disk (e.g., CD) is being played back by the execution of a second media player application that uses a CD-ROM drive of the PC. Another user is playing a video game on the PC, where a corresponding game application is generating an audio data stream based upon the user's interaction with the game application. One or more global audio effect applications (GFX) can also be executing on the PC. Examples of GFX include a reverberation effect application, an audio distortion effect application, a speaker compensation application performed by Digital Signal Processing (DSP) of streaming audio data to be rendered at one or more speakers, a multiband audio equalizer application is executing so as to present a user interface (UI) that works with an audio device (e.g., a sound card) to enable the PC user to adjust audio output from the audio device for various presets (e.g., concert hall, rock, classical, etc.), and other GFX that do DSP on one or more audio data streams that are output to one or more audio devices driven by one or more audio drivers.
Any application listed in the above example, as well as other audio visual applications, can be poorly written such that its execution fails and the application aborts. Such a failure of the application can cause a serious failure of the OS of the PC, also known as a computer crash, where the PC itself stops working. A computer crash can signify a very serious software bug in the code in which the application is written. In the instance of an audio application that requests the OS to output to an audio device, the bug can result in an access violation. The memory for a kernel (e.g., scheduling service) of the OS and the memory used to process the audio in the OS are supposed to be completely isolated from each other. An access violation occurs when the audio application performs an access to memory that is not resident (e.g., the memory access is not a legal or is impermissible). Access violations typically occur when an audio application has an audio device driver that is running in kernel mode. If the audio application makes an access violation to the kernel space of the OS or to the audio device driver, the access violation can cause a computer crash.
As long as the kernel of the OS remains intact, an audio application that crashes will not cause the kernel to be unstable. Rather, only the audio application stops working and must be restarted. An access violation of the kernel, however, can cause the kernel to become unstable such that there will be a fatal error from which no recovery is possible. In a Microsoft Windows® operating system environment, a user of a PC is notified of a computer crash by a diagnostic that is displayed on a blue screen. Thus, the term Blue Screen of Death (BSOD) is conventionally used. When the user gets the BSOD, there is no other recovery than to restart or boot the PC.
A particular detriment to using a PC as a media server occurs when just one of the several executing audio and audio visual applications has a software bug. The software bug can cause different levels of disruption in the audio being rendered from the PC. In the least disruption, only the audio datastreams generated by the bug-laden application are affected. At a higher level of disruption, all audio devices are affected and perhaps cease working, which is a cessation of the global rendering of audio to all audio devices. In an even more severe scenario, the software bug in one of the audio applications causes a computer crash, thus requiring all activity on the PC to cease until the OS is reloaded—which can take several minutes.
Given the foregoing, it would be an advantage in the art to provide an OS that services the audio requests of any kind of audio application executing on a computing system while isolating the audio application such that its failure during execution causes neither global audio rendering to cease nor a computer crash.